接續第 3 篇的內容,我們要繼續探討 SGID 和 SBIT~
我們來探討一個實際情況:
user1 和 user2 使用者想要共用一個 Projects 目錄,並在底下建立檔案
因爲建立的檔案需要兩個人都能開啓,因此 user1, user2 必須屬於同一個群組 Tools,而 Projects 的群組擁有者也要改成 Tools,當 user1 在 Projects 底下建立一個新的檔案的時候,檔案所屬群組必須是 Tools,但是一般情況下檔案所屬群組會是檔案建立者亦即 user1,所以必須設定 GID 來解決。
chmod 2770 Projects
2 代表設定 GID,770代表檔案所有權限歸檔案擁有者以及相關群組。
這樣就算新增一個使用者 user3 並把它加到 Tools 群組,他在 Projects 建立的檔案都會是屬於 Tools,3 位使用者都能共同協作。
伺服器有 user1, user2, user3 三位使用者。
如果 user1 開了一個門戶大開(chmod 777
) 的目錄名叫 container , user2 和 user3 就可以把 container 搬走 (x,又或是把 container 刪掉,很不方便。
因此設定 SBIT 之後,user2 和 user3 只能在 container 目錄底下新增或刪除自己建立的檔案(俗話說個人造孽個人擔),如果 user 2 妄想刪除 user3 的檔案,權限將被禁止。
根據剛剛三個權限所舉的檔案例子,轉換成四位的數字
檔案 | 權限 | 數字 |
---|---|---|
/etc/passwd | -rwsr-xr-xt | 4755 |
Projects | drwxrws--- | 2770 |
container | drwxrwxrwt | 1777 |